iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 23
0

最近碰到的前端小問題,但就想記錄一下
開啟我的小筆記本模式了

在製作專案時,不論帳號註冊登入成功,還是新增建立商品,都會跳出一段訊息提醒使用者。所以我們會在controller裡面寫上

flash[:notice] = "商品新增成功!"

以菜鳥的專案為例

def create   
  ...(略)
  if @food.save
    redirect_to foods_path, notice: '商品新增成功!'
  else
    render :edit
  end
end

我們這裡redirect_to路徑之後,緊接者notice: '商品新增成功!'這樣的寫法就等同於

flash[:notice] = "flash[:notice] = "商品新增成功!""
redirect_to foods_path

這個Flash是來快閃傳遞訊息的方法,他只會在畫面出現一次,重新整理就會立刻重畫面上消失,主要是用於redirect時,將會把文字訊息到下一個畫面。

在controller寫好Flash訊息之後,我們要將它輸出到畫面,所以會在view的html.erb裡面把訊息印出來

<%= flash[:notice] %>

https://ithelp.ithome.com.tw/upload/images/20191009/20120947JbEN0aSC8F.png
就可以成功看到剛剛我們給的提示訊息的字樣了!

接下來我們要來要用Bootstrap、Css簡單加個背景,換個顏色裝飾它都好
F12打開開發者工具之後,會發現在它身上找不到任何標籤啊(囧 只有一片白白幾個字
https://ithelp.ithome.com.tw/upload/images/20191009/201209472YFzj8dPqt.png

但不用緊張,使用alert就好
在這之前,我們要先知道Flash是一個暫時的Hash
以flash[:notice] = "商品新增成功!"為例
:notice是一個key,"商品新增成功!"則是一個value

<% flash.each do |key, value| %>
    <div class="alert alert-success <%= key %>">
      <%= value %>
    </div>
<% end %>

訊息就可以成功顯示出來了,如果覺得Boostrap的樣式不好看,就自行CSS調整囉
https://ithelp.ithome.com.tw/upload/images/20191009/201209471g50cOxxow.png

其實最簡單得方式,其實就是使用Boostrap給的方法,把class加上去其實這樣就好

<div class="alert alert-success" role="alert">
    <%= flash[:notice] %>
</div>

但因為我在Rails操作會有嚴重跑版問題
所以菜鳥我就用key跟value的方式去做處理畫面了
不過大家還是可以試試看喔!


上一篇
Day 22 | Rails 的 resources
下一篇
Day24 | Rails 的 Helper
系列文
從色彩繽紛到只看亂碼日子,學程式從 Ruby 出發!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言